﻿Public Class IsverenBordroHazirlama
	Inherits ProcessReport

	Dim Borc As Prim.Borc.BorcIsveren
	Dim Rsb As Recordset

	Public Overrides Sub GenericEvent(ByVal e As ProcessEventArgs)
		Select Case e.EventType
			Case EventType.Initialize
				Start("İşveren Bordro Hazırlama", "İşveren bilgisini ve borç hesaplama dönemini girin.")
				AddSigortali()
				AddDateRange("Tarih", "nl", "19760101", YMD(Today))
			Case EventType.ValidateForm
				Tables.Clear()
				Help = "!İşveren borcu hesaplanıyor, lütfen bekleyin..."
				Tables.Add("isveren", Sigortali.SnoAra(Remote, Input("Sigortali")))
				Borc = Prim.Borc.HesaplaIsveren(Remote, Input("Sigortali"), CurrentDepartment, Input("Tarih1"), Input("Tarih2"), Today.Date)
				If Borc.ErrorMessage <> "" Then
					Warning(Borc.ErrorMessage)
					ResetForm()
					Return
				End If
				Rsb = New Recordset("donem(s),basamak(n),bordro(s),isyerino(s),cezaoran(n),pogs0(n),pek0(m),anapara0(m),ceza0(m),pogs1(n),pek1(m),anapara1(m),ceza1(m),pogs2(n),pek2(m),anapara2(m),ceza2(m)")
				For Each Donem In Borc.Donemler.Values
					Rsb.AddNew()
					Rsb("donem") = Donem.Donem
					For Each Ay In Donem.Aylar
						Dim z = ((Ay.Tarih.Month - 1) Mod 3)
						Rsb("basamak") = Ay.Basamak
						Rsb("bordro") = Ay.Bordrolar(0).tip
						Rsb("pek" & z) = Ay.Bordrolar(0).pek
						Rsb("pogs" & z) = Ay.Bordrolar(0).pogs
						Rsb("anapara" & z) = Ay.Bordrolar(0).anapara
						Rsb("ceza" & z) = Ay.Bordrolar(0).ceza
						Rsb("isyerino") = Ay.Bordrolar(0).isyeri
						Rsb("cezaoran") = Ay.Bordrolar(0).cezaoran
					Next
				Next
				Rsb.MoveFirst()
				e.Result = True
			Case EventType.ReportHeader
				Report.NoPageNumbers = True
				Report.ResetIndent()
				Report.PrintLogo()
				Report.SetColumns("", "1", "c", "")
				Report.Print("<b>SOSYAL SİGORTALAR DAİRESİ")
				Report.Print("<b>ÜÇ AYLIK SİGORTA PRİMLERİ BORDROSU")
				Report.SkipLine()
				Report.BeginBorders()

				'İşveren bilgileri
				Report.AddBookmark()
				Report.SetBoundaries(0, 0.37)
				Report.Indent = New Padding(4)
				Report.SetColumns("", "1;2", "r;l", "--")
				Report.Print("<cs=2><c>İŞ SAHİBİ SİGORTALININ")
				Report.Print("Sigortalı numarası", Tables("isveren")("sno"))
				Report.Print("Kimlik numarası", Tables("isveren")("kimlik"))
				Report.Print("Adı soyadı", Trim(Tables("isveren")("adi")) & " " & Trim(Tables("isveren")("soyadi")))
				Report.Print("İkametgâh adresi", Tables("isveren")("adr") & " " & Tables("isveren")("adrsemt"))
				Report.EndBorders()
				Report.SkipLine()
				'İşyeri bilgileri
				Report.BeginBorders()
				Report.Print("<cs=2><c>İŞYERİNİN VEYA İŞİN")
				Dim Rsi = Isyeri.IsyeriNoAra(Remote, Rsb("isyerino"))
				Report.Print("Sicil numarası", Rsi("sicilno"))
				Report.Print("Adı", Rsi("isyeriadi"))
				Report.Print("Şirket ise kayıtlı ismi", Rsi("sirketadi"))
				Report.Print("Telefonu", Rsi("tel"))
				Report.Print("Adresi", Trim(IsNull(Rsi("adr"), "")) & " " & Trim(IsNull(Rsi("adrsemt"), "")))
				Report.EndBorders()
				Report.SkipLine()

				'Basamak/Tehlike
				Report.AddBookmark()
				Report.BeginBorders()
				Report.SetBoundaries(0, 0.72)
				Report.Indent = New Padding(5)
				Report.SetColumns("", "3;1", "r;c", "--")
				Report.Print("Seçilen basamak", Rsb("basamak"))
				Report.Print("İşveren hissesi %", Prim.Oran(Mid(Rsb("donem"), 1, 4) & "/" & Format(Mid(Rsb("donem"), 6, 1) * 3 - 2, "00") & "/01", Rsb("bordro"), Rsi("tehlike")))
				Report.Print("Tehlike sınıfı", Rsi("tehlike"))
				Report.Print("Prim oranı %", Rsi("tehlike") / 2)
				Report.EndBorders()
				Report.SkipLine()
				Report.AddBookmark()
				Report.SetBookmark(1)
				Report.SetBoundaries(0.66, 0)
				'Bordro
				Report.BeginBorders()
				Report.SetColumns("", "1", "c", "--")
				Report.Indent = New Padding(11)
				Report.Print("<+>Bordro tipi : " & Rsb("bordro"))
				Report.Indent = New Padding(4)
				Report.EndBorders()
				Report.SkipLine()
				Report.BeginBorders()
				Report.SetColumns("", "1;1;1", "cw;cw;cw", "--")
				'Aylar
				Report.Print("<cs=3>Bordronun ait olduğu yıl : " & Mid(Rsb("donem"), 1, 4))
				Report.Indent = New Padding(8)
				For y = 0 To 3
					If Mid(Rsb("donem"), 6, 1) = y + 1 Then
						Report.Print(MonthName(y * 3 + 1) & "/n(" & Rsb("pogs0") & " gün)", MonthName(y * 3 + 2) & "/n(" & Rsb("pogs1") & " gün)", MonthName(y * 3 + 3) & "/n(" & Rsb("pogs2") & " gün)")
					Else
						Report.Print(MonthName(y * 3 + 1) & "/n ", MonthName(y * 3 + 2) & "/n ", MonthName(y * 3 + 3) & "/n ")
					End If
				Next
				Report.EndBorders()

				Report.SetBookmark(2)
				Report.SetBoundaries(0.31, 0)
				'Bordro
				Report.BeginBorders()
				Report.SetColumns("", "3;1;1;1", "r;c;c;c", "--")
				Report.Indent = New Padding(3)
				Report.Print("Basamağa tekabül eden aylık gelir", Fm(Rsb("pek0")), Fm(Rsb("pek1")), Fm(Rsb("pek2")))
				Report.Print("Prime esas miktar", "<cs=3><r>" & Fm(IsNull(Rsb("pek0"), 0) + IsNull(Rsb("pek1"), 0) + IsNull(Rsb("pek2"), 0)))
				Report.Print("Prim tutarı", "<cs=3><r>" & Fm(IsNull(Rsb("anapara0"), 0) + IsNull(Rsb("anapara1"), 0) + IsNull(Rsb("anapara2"), 0)))
				Report.Print("Gecikme zammı", Rsb("cezaoran"), "<cs=2><r>" & Fm(IsNull(Rsb("ceza0"), 0) + IsNull(Rsb("ceza1"), 0) + IsNull(Rsb("ceza2"), 0)))
				Report.Print("Ödenecek prim tutarı", "<cs=3><r>" & Fm(IsNull(Rsb("anapara0"), 0) + IsNull(Rsb("anapara1"), 0) + IsNull(Rsb("anapara2"), 0) + IsNull(Rsb("ceza0"), 0) + IsNull(Rsb("ceza1"), 0) + IsNull(Rsb("ceza2"), 0)))

				Report.SetBookmark(3)
				Report.ResetIndent()
				Report.ResetBoundaries()
				Report.EndBorders()
				'İmza yeri
				Report.SetColumns("", "1", "c", "----")
				Report.Print("<b>Bu bordroda yazılı ve elektronik ortamda kayıtlı bilgilerin doğruluğunu ve bundan sorumluluğumu beyan ederim.")
				Report.SkipLine(3)
				Report.SetColumns("", "2;7;3", "c;c;c", "----")
				Report.Print("TARİH", "", "<w>İŞVERENİN/İŞSAHİBİNİN VEYA VEKİLİN İMZASI VE VARSA MÜHÜRÜ")
				Report.SkipLine()
				'Açıklama
				Report.SetColumns("", "1", "c", "--")
				Report.Print("<b>AÇIKLAMA")
				Report.SetColumns("", "1;70", "c;l", "----")
				Report.Indent = New Padding(0)
				Report.Print("1.  ", "<w>Bu bordro, iki nüsha olarak düzenlenir ve ödenmesi gereken primlerle birlikte bağlı bulunulan ŞUBE veya BÜRO'ya verilir.")
				Report.Print("2.  ", "<w>Bu bordro, ait olduğu üç aylık dönemi takip eden ayın sonuna kadarki süre içinde verilir. Süresi içinde verilmemesi halinde, Sosyal Sigortalar Yasası'nın 90. maddesinde öngörülen gecikme zammı ve faiz uygulanır.")
				Report.Print("3.  ", "<w>Prime esas miktar, seçilen basamağa tekabül eden aylık gelirin üç katı yazılır. Ancak, sigortalı ilgili dönem içinde Sosyal Sigortalar Dairesi'nden geçici işgöremezlik ödeneği almış ise, bu süreye ait primler ödenmez ve geçici işgöremezlik süresi, primler ödenecek gün sayısından düşülür.")
			Case EventType.ReportDetail
				Report.EndBorders()
				Report.EndPage()
				Rsb.MoveNext()
				e.Result = Not Rsb.EOF
		End Select
	End Sub

End Class
